
local class = require("Utils.ClassUtils").class

---@class SaveDataController
---@field new fun(): SaveDataController
local SaveDataController = class("SaveDataController")

function SaveDataController:ctor()
    self.dataTables = {} -- 存储所有表格数据
    self.equpiIds= {}
    self.playerData = {} -- 按玩家roleid存储的玩家数据
end

-- 加载表格数据
function SaveDataController:loadTableData(tableName)
    if not self.dataTables[tableName] then
        self.dataTables[tableName] = GameAPI.load_excel(tableName)
    end
    return self.dataTables[tableName]
end

function SaveDataController:addEqupiId( key)
   table.insert(G.equpiIds, key)
    print("当前装备列表:")
    for i, v in ipairs(G.equpiIds) do
        print(i, v)
    end
end

-- 保存玩家数据
function SaveDataController:savePlayerData(role, key, value)
   role.set_archive_by_type(Enums.ArchiveType.Str, key, value)
end

-- 获取玩家数据
function SaveDataController:getPlayerData(role, key)
    return role.get_archive_by_type(Enums.ArchiveType.Str, key)
   
end

-- 从表格获取数据
function SaveDataController:getTableValue(tableName, row, column)
    local tableData = self:loadTableData(tableName)
    if tableData then
        return tableData[row][column]
    end
    return nil
end

 function SaveDataController:serializeTable(t)
    local parts = {}
    for key, values in pairs(t) do
        local valueStr = table.concat(values, ",") -- 假设 values 是数组 {x, y, z}
        table.insert(parts, string.format("%s=%s", key, valueStr))
    end
    return table.concat(parts, ";")
end

-- 更新表格数据
function SaveDataController:updateTableValue(tableName, row, column, value)
    local tableData = self:loadTableData(tableName)
    if tableData then
        tableData[row][column] = value
        GameAPI.save_excel(tableName, tableData)
    end
end

return SaveDataController